package com.boornet.encrypt.util;

import com.boornet.encrypt.po.UserInfo;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

/**
 * Created by zcx on 2021/2/24.
 */
public class IfElse {

    public static UserInfo getUserInfo(String email) {
        System.out.println("getUserInfo...");
        UserInfo userInfo = new UserInfo();
        userInfo.setEmail(email);
        return userInfo;
    }

    public static void getParaUserInfo(UserInfo user){
        System.out.println(user);
    }

    public static void main(String[] args) {
        // 模拟操作得到emptyOpt.get 报错
//        Optional<UserInfo> emptyOpt = Optional.empty();
//        System.out.println(emptyOpt.get());

        //传入的对象不能为null
//        UserInfo user = null;
//        Optional<UserInfo> opt = Optional.of(user);

        // 传入的对象有可能为null
//        UserInfo user = null;
//        Optional<UserInfo> opt = Optional.ofNullable(user);
//        opt.ifPresent( u -> System.out.println("aaaaa"));
//        System.out.println("11111");
//
//        // ifPresent不为null 则执行lambda
//        UserInfo user2 = new UserInfo();
//        user2.setUsername("zcx");
//        Optional<UserInfo> opt2 = Optional.ofNullable(user2);
//        opt2.ifPresent( u -> System.out.println("bbbbb"));
//        System.out.println("22222");
//
//        // 第一个为null 返回默认的第二个
//        UserInfo user3 = Optional.ofNullable(user).orElse(user2);
//        System.out.println(user3);

//        UserInfo user4 = Optional.ofNullable(user).orElse(null);
//        System.out.println(user4);
//        UserInfo user5 = Optional.ofNullable(user).orElseGet(() -> null);
//        System.out.println(user5);
//        UserInfo user8 = Optional.ofNullable(user).orElseGet((1) -> getUserInfo("234"));
//        System.out.println(user8);
//        UserInfo user9 = Optional.ofNullable(user).orElseGet(getUserInfo("234"));
//        System.out.println(user9);
//
//
//        UserInfo user6 = Optional.ofNullable(user2).orElse(getUserInfo("123"));
//        System.out.println(user6);
//        UserInfo user7 = Optional.ofNullable(user2).orElseGet(() -> getUserInfo("234"));
//        System.out.println(user7);

//        List<UserInfo> userInfoList = new ArrayList<>();
//        userInfoList.forEach(UserInfo::getUsername);
//        UserInfo user10 = new UserInfo();
//        user10.setEmail("766470473@qq.com");
//        String email = Optional.ofNullable(user10)
//                .map(u -> u.getEmail()).orElse("default@gmail.com");
//        System.out.println(email);
//        System.out.println(user10.getEmail());
//
//        String email2 = Optional.ofNullable(user10)
//                .flatMap(u -> Optional.ofNullable(u.getEmail())).orElse("default@gmail.com");
//        System.out.println(email2);

        UserInfo user11 = new UserInfo();
        user11.setEmail("766470473@qq.com");
        Optional<UserInfo> user12 = Optional.ofNullable(user11)
                .filter(u -> u.getEmail() != null && u.getEmail().contains("@"));
        System.out.println(user12.isPresent());
        System.out.println(user12.get());
    }
}
